#pragma once

inline long InterlockedIncrement(long* p)
{
	long	ret = 1;

	__asm__ __volatile__("lock; xadd %0,%1":"+r"(ret):"m"(*p):"memory");

	return ret + 1;
}

inline long InterlockedDecrement(long *p)
{
		long	ret = -1;

	__asm__ __volatile__("lock; xadd %0,%1":"+r"(ret):"m"(*p):"memory");

	return ret - 1;
}
